﻿using System;
using System.Configuration;
using System.IO;
using System.Net;
using System.Net.Mail;
using System.Text;
using log4net;


namespace DevMaker.CM.Mailing.App_code {
    class EnviaPdfBoleta {
        private static readonly ILog Log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
        public static void Envia(Boleta boleta) {

            try {
                var conf = ConfigurationManager.AppSettings;

                if (!File.Exists(boleta.PathFile)) {
                    var ex = new FileNotFoundException("no se encuenta el archivo " + boleta.PathFile);
                    Log.Error(ex);
                    BoletaDao.InsertTracking(boleta, "Env_Pdf", ex);
                    return;
                }
                var msg = new MailMessage();
                var to = boleta.vwBookingH_strEmail;

                //Se remplaza el valor de los mails si es que se deja fijo en el App.config
                if (!String.IsNullOrEmpty(ConfigurationManager.AppSettings["FixedEmail"]))
                    to = ConfigurationManager.AppSettings["FixedEmail"];
                msg.To.Add(to);


                if (!String.IsNullOrEmpty(ConfigurationManager.AppSettings["mailBcc"]))
                    msg.Bcc.Add(ConfigurationManager.AppSettings["mailBcc"]);


                msg.From = new MailAddress(conf["mailFrom"], conf["mailFromName"], Encoding.UTF8);
                msg.Subject = conf["mailSubject"];
                msg.SubjectEncoding = Encoding.UTF8;
                var oAttachment = new Attachment("firma.jpg");
                var contentID = Guid.NewGuid().ToString();
                oAttachment.ContentId = contentID;
                msg.Attachments.Add(oAttachment);

                String bodyHtml = String.Format(@"
<div style=""font-family: arial,sans-serif\"">
Estimado cliente<br/><br/>

Adjuntamos  en este correo  una copia  de la boleta asociada a su compra en nuestro portal WWW.CINEMARK.CL durante el Cyber Monday 2014.<br/><br/>

Ante cualquier consulta por favor contactarnos a este correo.<br/>
Gracias por preferirnos<br/>

<b>Cinemark Chile.</b><br/><br/><br/>
<img src=""cid:{0}"" />
</div>", oAttachment.ContentId);

                msg.Body = bodyHtml;
                msg.BodyEncoding = Encoding.UTF8;
                msg.IsBodyHtml = true;

                msg.Attachments.Add(new Attachment(boleta.PathFile));

                // msg.Bcc.Add("beatlecito@gmail.com");
                //msg.Bcc.Add("vhspiceros@gmail.com");
                //msg.Bcc.Add("victor.saavedra@devmaker.cl");
                var client = new SmtpClient {
                    Port = Convert.ToInt16(conf["smtpPort"]),
                    Host = conf["smtpServer"],
                    EnableSsl = Convert.ToBoolean(conf["smtpEnableSsl"]),
                    DeliveryMethod = SmtpDeliveryMethod.Network
                };
                if (!String.IsNullOrEmpty(conf["smtpUser"])) {
                    client.Credentials = new NetworkCredential(conf["smtpUser"], conf["smtpPass"]);
                } else {
                    client.UseDefaultCredentials = true;
                }

                Log.InfoFormat("Enviando correo a {0}", msg.To);
                client.Send(msg);


                foreach (var attachment in msg.Attachments) {
                    attachment.Dispose();
                }
                msg.Dispose();

                BoletaDao.InsertTracking(boleta, "Env_Pdf", null);
            } catch (SmtpException ex) {
                Log.Error(ex);
                BoletaDao.InsertTracking(boleta, "Env_Pdf", ex);
            }
        }
    }
}

